package 力扣._98_验证BST;

import 力扣.公用数据结构.TreeNode;

class Solution3 {
    public boolean isValidBST(TreeNode root) {
        return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);
    }

    public boolean isValidBST(TreeNode node, long lower, long upper) {  //当前子树应满足的最大最小值
        if (node == null) {
            return true;
        }
        if (node.val <= lower || node.val >= upper) {
            return false;
        }
        //换个思路就成了，我一直想要的是根大于左子树最大
        //但这里，左子树小于根，就可以了
        return isValidBST(node.left, lower, node.val) && isValidBST(node.right, node.val, upper);
    }
}
